package com.jxm.hashtab;

/**
 * @Author: jxm
 * @Description: 创建EmpLinkedList,表示链表
 * @Date: 2022/9/16 17:00
 * @Version: 1.0
 */
public class EmpLinkedList {

    //头指针,直接指向第一个Emp
    private Emp head; //默认null

    //添加雇员到链表
    public void add(Emp emp){
        //如果是第一个雇员
        if(head == null){
            head = emp;
            return;
        }

        //如果不是第一个，则使用辅助指针，帮助定位到最后
        Emp curEmp = head;
        while (true){
            if(curEmp.next == null){
                break;
            }
            //后移
            curEmp = curEmp.next;
        }
        //将emp加入链表
        curEmp.next = emp;
    }

    //遍历链表
    public void list(int no){
        if(head == null){
            System.out.println("第"+no+"链表为空");
            return;
        }

        System.out.print("第"+no+"链表信息为：");
        Emp curEmp = head;
        while (true){
            System.out.printf(" =>id=%d name=%s\t",curEmp.id,curEmp.name);
            if(curEmp.next == null){
                break;
            }
            //后移指针
            curEmp = curEmp.next;
        }

        System.out.println();

    }

    //根据id查找雇员，有返回Emp,否则返回null
    public Emp findEmpById(int id){
        //判断链表是否为空
        if(head == null){
            System.out.println("链表为空");
            return null;
        }

        Emp curEmp = head;
        while (true){
            if(curEmp.id == id){ //表示找到该雇员
                break;
            }
            //退出
            if (curEmp.next == null){
                curEmp = null;
                break;
            }
            curEmp = curEmp.next;
        }


        return curEmp;
    }

}
